/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package compras.beans;

import entities.FacturaPedidoFabrica;
import entities.PedidoFabrica;
import entities.Producto;
import facades.LineaFacturaPedidoFabricaFacade;
import facades.LineaPedidoFabricaFacade;
import javax.inject.Named;
import javax.enterprise.context.SessionScoped;
import java.io.Serializable;
import java.math.BigDecimal;
import javax.enterprise.event.Observes;
import javax.inject.Inject;
import qualifiers.EventoEntidadElegida;
import ventas.datamodel.TablaPedidoDataModel;

/**
 *
 * @author damfercer
 */
@Named(value = "estadoPedidoFabricaBean")
@SessionScoped
public class EstadoPedidoFabricaBean implements Serializable {
    @Inject
    private LineaFacturaPedidoFabricaFacade lineaFacturaPedidoFabricaFacade;
    @Inject
    private LineaPedidoFabricaFacade lineaPedidoFabricaFacade;
    private PedidoFabrica pedidoFabrica;
    @Inject
    private TablaPedidoDataModel tablaPedidoDataModel;
    /**
     * Creates a new instance of EstadoPedidoFabricaBean
     */
    public EstadoPedidoFabricaBean() {
    }
    
    public void onPedidoFabricaElegido(@Observes @EventoEntidadElegida PedidoFabrica pf){
        this.getTablaPedidoDataModel().setPedido(pf);
        this.setPedidoFabrica(pf);
    }
    
    public Integer recuperarCantidadPedidaDeProducto(Producto p){
        return lineaPedidoFabricaFacade.cantidadPedidaDeProductoYPedidoFabrica(getPedidoFabrica(), p);
    }
    
    public Integer recuperarCantidadRecibidaDeProducto(Producto p){
        return lineaFacturaPedidoFabricaFacade.cantidadRecibidaDeProductoYPedidoFabrica(getPedidoFabrica(), p);
    }
    
    public Integer recuperarCantidadRecibidaDeProductoYFactura(Producto p, FacturaPedidoFabrica f){
        return lineaFacturaPedidoFabricaFacade.cantidadRecibidaDeProductoYFacturaPedidoFabrica(f, p);
    }

    public BigDecimal recuperarPrecioDeProducto(Producto p){
        return lineaFacturaPedidoFabricaFacade.precioPonderadoDeProductoYPedidoFabrica(p, pedidoFabrica);
    }
    /**
     * @return the pedidoFabrica
     */
    public PedidoFabrica getPedidoFabrica() {
        return pedidoFabrica;
    }

    /**
     * @param pedidoFabrica the pedidoFabrica to set
     */
    public void setPedidoFabrica(PedidoFabrica pedidoFabrica) {
        this.pedidoFabrica = pedidoFabrica;
    }

    /**
     * @return the tablaPedidoDataModel
     */
    public TablaPedidoDataModel getTablaPedidoDataModel() {
        return tablaPedidoDataModel;
    }

    /**
     * @param tablaPedidoDataModel the tablaPedidoDataModel to set
     */
    public void setTablaPedidoDataModel(TablaPedidoDataModel tablaPedidoDataModel) {
        this.tablaPedidoDataModel = tablaPedidoDataModel;
    }
}
